/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fachadas;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.EstatisticasIndividuaisDetalhe;
import pergunta.EstatisticaPergunta;
import repositorio.PerguntasRepositorio;

/**
 *
 * @author Ello Serafim
 */
public class FachadaEstatisticas {

    private static FachadaEstatisticas fachada;
    private PerguntasRepositorio repositorio;

    static {
        fachada = new FachadaEstatisticas();
    }

    public FachadaEstatisticas() {
        repositorio = new PerguntasRepositorio();
    }

    public static FachadaEstatisticas getInstance() {
        return fachada;
    }

    public EstatisticaPergunta pegaPerguntaMaiorTaxaErro() {
            ArrayList<EstatisticaPergunta> estatisticasPorPergunta = new ArrayList();
        try {
            
            List<EstatisticasIndividuaisDetalhe> detalhes = repositorio.listarEstatisticasIndividuaisDetalhe();
//        Percorre as estatísticas detalhadas
            for (EstatisticasIndividuaisDetalhe det : detalhes) {
                Boolean estaNaLista = false;
//            A cada um, verifica se já está na lista de estatisticas por pergunta.
                for (EstatisticaPergunta estat : estatisticasPorPergunta) {
//                   Se já estava na lista  final, atualizar qtde de erros e acertos.
                    if (estat.getIdPergunta() == det.getIdPergunta()) {
                        estaNaLista = true;

                        if (det.getAcertou()) {
                            estat.setQtdeAcertos(estat.getQtdeAcertos() + 1);
                        } else {
                            estat.setQtdeErros(estat.getQtdeErros() + 1);
                        }
                        break;
                    }
                }
                if (!estaNaLista) {
//                    Se não estava na lista, adicionar à lista final
                    if (det.getAcertou()) {
                        estatisticasPorPergunta.add(new EstatisticaPergunta(det.getIdPergunta(), 0, 1));
                    } else {
                        estatisticasPorPergunta.add(new EstatisticaPergunta(det.getIdPergunta(), 1, 0));
                    }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
//        Agora vamos procurar pela que teve maior numero de erros:
        EstatisticaPergunta maior = null;
        int maiorTaxa = 0;
        for(EstatisticaPergunta pergunta : estatisticasPorPergunta)
        {
            int taxaErros = pergunta.getQtdeErros();
            if(taxaErros > maiorTaxa)
            {
                maiorTaxa = taxaErros;
                maior = pergunta;
            }
        }

        return maior;
    }

}
